API Documentation
Classes | Typedefs | Enumerations
nkGraphics Namespace Reference

Encompasses all API of component NilkinsGraphics. More...

Classes

class  AsyncWorker
 The async worker available in the engine. More...
 
class  BaseHandler
 Base class for an input handler. More...
 
class  BaseKeyHandler
 Base handler for keyboards. More...
 
class  BaseMouseHandler
 Base input handler for mouse. More...
 
class  BlendState
 Holds all information about the blend operations to use when rendering. More...
 
class  BlendStateManager
 Manages the blend states available in the component. More...
 
class  BoundingBox
 A bounding box. Often used to encompass object's bounds in the world. More...
 
class  Buffer
 A buffer that will reside on the GPU. More...
 
class  BufferManager
 Manages the buffers declared within the component. More...
 
class  BuiltInShaderBuilder
 Interface for built in shaders builders. More...
 
class  BuiltInShaderNormalBuilder
 Builder for shaders accepting meshes with normals. More...
 
class  BuiltInShaderPositionBuilder
 Builder for shaders accepting meshes with only positions. More...
 
class  BuiltInShaderUvBuilder
 Builder for shaders accepting meshes with uvs. More...
 
class  BuiltInShaderUvNormalBuilder
 Builder for shaders accepting meshes with uvs and normals. More...
 
class  Camera
 Offers all controls to model a camera. More...
 
class  CameraManager
 Manages the camera within the component. More...
 
class  ClearTargetsPass
 A clear target pass, during which some targets are cleared. More...
 
class  Compositor
 A compositor, describing how to compose the rendering pipeline. More...
 
class  CompositorManager
 Manages the Compositor available in the component. More...
 
class  CompositorNode
 A node in the rendering graph described by a Compositor. More...
 
class  ComputePass
 A compute pass, during which a compute dispatch is launched. More...
 
class  ConfigHolder
 Holds all the information about a configuration. More...
 
class  ConfigManager
 The manager for the configuration active in the component. More...
 
class  ConfigReader
 A reader for a configuration source. More...
 
class  ConstantBuffer
 Describes a constant buffer. More...
 
class  ContentLoader
 Utility class that allows to load content through their declaration files. More...
 
class  ContentLoadResult
 Holds information about an attempt of parsing content declaration sources. More...
 
class  DepthStencilState
 Holds information about a depth and stencil state used for rendering. More...
 
class  DepthStencilStateManager
 Manages the depth and stencil states available in the component. More...
 
class  Entity
 An entity in a render queue. It drives the shader and possible graph position for a set of renderables (SubEntity). More...
 
class  Frustum
 Defines a frustum. More...
 
class  GlobalTimer
 A timer, giving time capabilities. More...
 
class  GlobalTimerManager
 Manages the timers attached to contexts. Usually timers can be useful for deltas of frames. More...
 
class  GltfMeshDecoder
 A decoder that can handle gltf mesh. Supported format is glb, aka binary gltf 2. More...
 
class  GltfMeshDecoderUtils
 Used internally for decoding. More...
 
class  GraphicSystem
 The graphic system used. More...
 
class  HashHelper
 Utility class helping to create hashes. More...
 
class  ImageData
 Holds an image data and its description in memory. More...
 
class  InfiniteBitMask
 A utility class providing "infinite" masks, formed by bits, or booleans. More...
 
class  InfiniteMask
 A more generic version of the InfiniteBitMask. More...
 
class  InputSystem
 The input system used within the component. More...
 
class  InstancingPass
 A pass doing an instanced draw, during which one mesh is drawn X times, in one go. More...
 
class  Light
 WIP, should not be used. More...
 
class  LightManager
 WIP, should not be used. More...
 
class  LogManager
 Responsible for logging all messages from the component. More...
 
class  MainSystem
 Main interface with the component system. More...
 
struct  MapRequestDescriptor
 A description of a request to map a resource. More...
 
struct  MapResult
 Contains all information of the result of a map operation on a resource. More...
 
class  Mesh
 Holds information about a mesh. Used as a basis to render 3d models. More...
 
class  MeshDataLinkTracker
 Used internally. More...
 
class  MeshDecoder
 Base class for a mesh data decoder. More...
 
class  MeshLoader
 Loader for mesh data. Parses different formats to populate the data inside meshes. More...
 
class  MeshManager
 Manages the meshes available in the component. More...
 
class  MonoMaterialPass
 A pass rendering the scene, using only one shader to render all the meshes enqueued. More...
 
class  Node
 Represents a node in a scene graph. More...
 
class  NodeChangeListener
 A base class for a listener for node changes. More...
 
class  NodeManager
 Manages the nodes available in the component. More...
 
class  ObjMeshDecoder
 A decoder that can handle obj files. More...
 
class  Pass
 The base for a pass within a TargetOperations.
More...
 
class  PostProcessPass
 A post processing pass, during which a shader is used to render a quad fitting on the screen. More...
 
class  ProfilableClass
 WIP. Functionality should not be used for now. More...
 
class  ProfilingHelper
 WIP. Functionality should not be used for now. More...
 
struct  ProfilingInfosHolder
 WIP. More...
 
class  Program
 Holds all information, and manages the compilation of GPU programs. More...
 
class  ProgramCompilationResult
 Holds information about a complation result, from a program. More...
 
class  ProgramManager
 Manages the sahders available in the component. More...
 
class  ProgramSourcesHolder
 Holds the sources of a program. More...
 
class  QueuedRenderableObject
 Represents a queued renderable, within a RenderQueue. Used internally. More...
 
class  RasterState
 Holds information about a raster state. More...
 
class  RasterStateManager
 Manages the raster states available in the component. More...
 
class  RaytracingPass
 A raytracing pass. Dispatches rays, using the hardware acceleration. More...
 
class  RenderContext
 A rendering context, attached to a graphic window to present to the screen. More...
 
struct  RenderContextDescriptor
 A descriptor, used when creating a context along with its window. More...
 
class  RenderContextManager
 Manages the rendering contexts available in the component. More...
 
class  RenderDescriptor
 Holds information about the configuration of rendering. More...
 
class  Renderer
 A renderer, implementing the logic of using a graphics API. More...
 
struct  RendererSupportInfo
 Informations about the supported features. More...
 
class  RenderQueue
 A render queue, where all items that have to be rendered are queued. More...
 
class  RenderQueueManager
 Manages the render queues available in the component. More...
 
class  RenderScenePass
 A pass rendering render queues. More...
 
class  Resource
 Base class for a resource in the component. More...
 
struct  ResourceCpuDataDescriptor
 Describes data on the cpu, to be uploaded to the gpu. More...
 
class  ResourceDeclAugmentCallback
 A callback called whenever a resource is being processed, during a save or load of resource set. More...
 
struct  ResourceGpuCopyDescriptor
 Holds information about a resource copy happening on the GPU only. More...
 
class  ResourceManager
 Generic resource manager, enabling more intelligent processing of resources, compared to the ContentLoader. More...
 
class  ResourceNodeWrapper
 Used internally when operating on resources. More...
 
class  ResourceSaveLoadCallback
 Used internally when operating on resources. More...
 
class  ResourceSetLoadQuery
 Holds information about a resource set (project) load query. More...
 
class  ResourceSetLoadResult
 Holds the result of a loading operation for a resource set. More...
 
class  ResourceSetSaveQuery
 Holds information about a resource set (project) saving query. More...
 
class  ResourceSettingsChecker
 Checks resources settings when loading. Used to prevent from loading invalid data. More...
 
class  ResourceTask
 A task made for loading resources. More...
 
class  Sampler
 Holds all the information needed of a sampler used during rendering. More...
 
class  SamplerManager
 Manages the samplers available in the component. More...
 
class  ScreenshotTaker
 Utility class helping to isolate data from a render context. More...
 
class  Shader
 A shader class, feeding data to a Program. More...
 
class  ShaderBoundResourceDesc
 Holds information about a resource linked in a shader for feeding. More...
 
class  ShaderInstanceCustomDummySlot
 A dummy custom instance slot. More...
 
class  ShaderInstanceCustomSlot
 A custom slot, implementable by external code. More...
 
class  ShaderInstanceMemorySlot
 A memory slot for per instance data in a Shader. More...
 
class  ShaderManager
 Manages the sahders available in the component. More...
 
class  ShaderMemorySlot
 A memory slot in a memory resource. More...
 
class  ShaderPassCustomDummySlot
 A dummy custom pass slot. More...
 
class  ShaderPassCustomSlot
 A custom slot, implementable by external code. More...
 
class  ShaderPassMemorySlot
 A memory slot that fits into a ConstantBuffer. The slot fills entries within the buffer. More...
 
class  ShaderResource
 Base class for shader resources. Those are resources that can be fed to a Shader. More...
 
class  StreamOutputDescriptor
 Holds information about a stream output slot. More...
 
class  StructToString
 Converts enums to string, and vice versa. More...
 
class  SubEntity
 Holds information about a sub entity, a renderable exposing the geometry. More...
 
struct  SubresourceCpuDataDescriptor
 Describes the memory layout of a subresource, within a resource. More...
 
class  TargetOperations
 Describes a target operation set. More...
 
class  Texture
 A texture used for rendering, hosted on GPU. More...
 
class  TextureManager
 Manages the textures available in the component. More...
 
class  TextureSaver
 Utility class to save texture contents in files. More...
 
class  TextureUtils
 Utility class to retrieve or compute interesting data about textures. More...
 
struct  UnmapRequestDescriptor
 Description of an unmap request. More...
 
struct  VertexComponent
 Holds information about a vertex. More...
 
class  VertexComposition
 Holds information about the composition of a mesh : the data it offers. More...
 
class  Viewport
 Holds all the information needed about a viewport. More...
 
class  ViewportManager
 Manages the viewports available in the component. More...
 
class  WindowDescriptor
 Holds information about a window configuration. More...
 

Typedefs

typedef ContentLoadResult< SamplerContentLoadResultSampler
 Load result for samplers.
 
typedef ContentLoadResult< TextureContentLoadResultTexture
 Load result for texture.
 
typedef ContentLoadResult< BufferContentLoadResultBuffer
 Load result for buffers.
 
typedef ContentLoadResult< ConstantBufferContentLoadResultConstantBuffer
 Load result for constant buffers.
 
typedef ContentLoadResult< ShaderContentLoadResultShader
 Load result for shaders.
 
typedef ContentLoadResult< ShaderMemorySlotContentLoadResultShaderMemorySlot
 Load result for memory slots.
 
typedef ContentLoadResult< ProgramContentLoadResultProgram
 Load result for programs.
 
typedef ContentLoadResult< PassContentLoadResultPass
 Load result for passes.
 
typedef ContentLoadResult< CompositorContentLoadResultCompositor
 Load result for compositors.
 
typedef ContentLoadResult< CompositorNodeContentLoadResultCompositorNode
 Load result for compositor nodes.
 
typedef ContentLoadResult< MeshContentLoadResultMesh
 Load result for meshes.
 
typedef ContentLoadResult< NodeContentLoadResultNode
 Load result for nodes.
 
typedef ContentLoadResult< BlendStateContentLoadResultBlendState
 Load result for blend states.
 
typedef ContentLoadResult< DepthStencilStateContentLoadResultDepthStencilState
 Load result for depth and stencil states.
 
typedef ContentLoadResult< RasterStateContentLoadResultRasterState
 Load result for raster states.
 
using ContentLoadResultCamera = ContentLoadResult< Camera >
 Load result for cameras.
 
using ContentLoadResultRenderQueue = ContentLoadResult< RenderQueue >
 Load result for render queues.
 
typedef void(* gpuAnswerCallback) (ProfilingInfosHolder *profilingInfos)
 WIP.
 
using ConstantBufferResourceDesc = ShaderBoundResourceDesc< ConstantBuffer >
 Definition for constant buffers.
 
using ShaderResourceDesc = ShaderBoundResourceDesc< ShaderResource >
 Definition for shader resources.
 
using UavResourceDesc = ShaderBoundResourceDesc< Buffer >
 Definition for UAV resources.
 
using SamplerResourceDesc = ShaderBoundResourceDesc< Sampler >
 Definition for samplers.
 
typedef InfiniteMask< char > InfiniteByteMask
 Typedefed char mask.
 
typedef InfiniteMask< short > InfiniteShortMask
 Typedefed short mask.
 
typedef InfiniteMask< int > InfiniteIntMask
 Typedefed int mask.
 
typedef InfiniteMask< unsigned long long > InfiniteInt64Mask
 Typedefed unsigned long long mask.
 

Enumerations

enum  RENDER_PROPS { RENDER_PROPS::V_SYNC = 0 }
 Available rendering properties. More...
 
enum  WINDOW_PROPS { WINDOW_PROPS::WIDTH = 0, WINDOW_PROPS::HEIGHT, WINDOW_PROPS::FULLSCREEN }
 Enum of all properties a window can have. More...
 
enum  CONTENT_LOAD_RESULT_STATE { CONTENT_LOAD_RESULT_STATE::SUCCESS = 0, CONTENT_LOAD_RESULT_STATE::PARTIAL, CONTENT_LOAD_RESULT_STATE::FAILURE }
 The available values for a parsing attempt result. More...
 
enum  PASS_TYPE {
  PASS_TYPE::UNKNOWN = 0, PASS_TYPE::CLEAR_TARGETS, PASS_TYPE::COMPUTE, PASS_TYPE::INSTANCING,
  PASS_TYPE::MONO_MATERIAL, PASS_TYPE::POST_PROCESS, PASS_TYPE::RENDER_SCENE, PASS_TYPE::RAYTRACING
}
 The pass types available in the component. More...
 
enum  ProfilableData { PROFILING_DATA_TIME = 0, PROFILING_DATA_STATISTICS }
 WIP.
 
enum  PROGRAM_TYPE : int {
  PROGRAM_TYPE::UNKNOWN = 0, PROGRAM_TYPE::COMPUTE, PROGRAM_TYPE::GEOMETRY, PROGRAM_TYPE::PIPELINE,
  PROGRAM_TYPE::RAYTRACING
}
 The type of programs available. More...
 
enum  RENDERING_API { RENDERING_API::AUTOMATIC = 0, RENDERING_API::D3D11, RENDERING_API::D3D12 }
 Enumerates supported graphics API. More...
 
enum  RESOURCE_LOAD_STATE { RESOURCE_LOAD_STATE::UNLOADED = 0, RESOURCE_LOAD_STATE::LOADING, RESOURCE_LOAD_STATE::READY_FOR_RENDERING, RESOURCE_LOAD_STATE::LOADED }
 The resource load states possible. More...
 
enum  RESOURCE_TYPE {
  RESOURCE_TYPE::UNKNOWN = 0, RESOURCE_TYPE::COMPOSITOR, RESOURCE_TYPE::MESH, RESOURCE_TYPE::BLEND_STATE,
  RESOURCE_TYPE::DEPTH_STENCIL_STATE, RESOURCE_TYPE::RASTER_STATE, RESOURCE_TYPE::PROGRAM, RESOURCE_TYPE::SHADER,
  RESOURCE_TYPE::BUFFER, RESOURCE_TYPE::ACCELERATION_STRUCTURE, RESOURCE_TYPE::TEXTURE, RESOURCE_TYPE::SAMPLER,
  RESOURCE_TYPE::NODE_WRAPPER
}
 The type of resources available in the component. More...
 
enum  RESOURCE_TASK_TYPE {
  UNKNOWN = 0, LOAD_CAMERA, LOAD_BLEND_STATE, LOAD_DEPTH_STENCIL_STATE,
  LOAD_RASTER_STATE, LOAD_SAMPLER, LOAD_TEXTURE, LOAD_BUFFER,
  LOAD_SHADER, LOAD_PROGRAM, LOAD_MESH, LOAD_COMPOSITOR,
  LOAD_NODE, LOAD_RESOURCE_SET
}
 The task type, for resource loading.
 
enum  TEX_TYPE { TEX_TYPE::TEX_2D = 0, TEX_TYPE::TEX_3D, TEX_TYPE::TEX_CUBEMAP }
 The type a texture can be. More...
 
enum  TEX_RENDER_FLAG { TEX_RENDER_FLAG::NO_RENDER = 0, TEX_RENDER_FLAG::RENDER_TARGET, TEX_RENDER_FLAG::DEPTH_RENDER_TARGET }
 The render flag possible for a texture. More...
 
enum  USAGE { USAGE_DEFAULT = 0, USAGE_IMMUTABLE = 1, USAGE_DYNAMIC = 2, USAGE_STAGING = 3 }
 Available usage for resources. Drives the memory used for hosting the data. More...
 
enum  BIND_FLAG {
  BIND_NONE = 0, BIND_VERTEX_BUFFER = 0x1L, BIND_INDEX_BUFFER = 0x2L, BIND_CONSTANT_BUFFER = 0x4L,
  BIND_SHADER_RESOURCE = 0x8L, BIND_STREAM_OUTPUT = 0x10L, BIND_RENDER_TARGET = 0x20L, BIND_DEPTH_STENCIL = 0x40L,
  BIND_UNORDERED_ACCESS = 0x80L, BIND_DECODER = 0x200L, BIND_VIDEO_ENCODER = 0x400L
}
 Available binding flags for a resources.
 
enum  CPU_ACCESS_FLAG { CPU_ACCESS_NONE = 0, CPU_ACCESS_WRITE = 0x10000L, CPU_ACCESS_READ = 0x20000L, CPU_ACCESS_READ_WRITE = CPU_ACCESS_WRITE | CPU_ACCESS_READ }
 Available cpu access flags. More...
 
enum  RESOURCE_MISC_FLAG {
  RESOURCE_MISC_NONE = 0, RESOURCE_MISC_GENERATE_MIPS = 0x1L, RESOURCE_MISC_SHARED = 0x2L, RESOURCE_MISC_TEXTURECUBE = 0x4L,
  RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10L, RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20L, RESOURCE_MISC_BUFFER_STRUCTURED = 0x40L, RESOURCE_MISC_RESOURCE_CLAMP = 0x80L,
  RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100L, RESOURCE_MISC_GDI_COMPATIBLE = 0x200L, RESOURCE_MISC_SHARED_NTHANDLE = 0x800L, RESOURCE_MISC_RESTRICTED_CONTENT = 0x1000L,
  RESOURCE_MISC_RESTRICT_SHARED_RESOURCE = 0x2000L, RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER = 0x4000L, RESOURCE_MISC_GUARDED = 0x8000L, RESOURCE_MISC_TILE_POOL = 0x20000L,
  RESOURCE_MISC_TILED = 0x40000L, RESOURCE_MISC_HW_PROTECTED = 0x80000L
}
 Available misc flags for resources.
 
enum  FILTER {
  FILTER_MIN_MAG_MIP_POINT = 0, FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1, FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4, FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
  FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10, FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11, FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14, FILTER_MIN_MAG_MIP_LINEAR = 0x15,
  FILTER_ANISOTROPIC = 0x55, FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80, FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81, FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
  FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85, FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90, FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91, FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
  FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95, FILTER_COMPARISON_ANISOTROPIC = 0xd5, FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100, FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
  FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104, FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105, FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110, FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
  FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114, FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115, FILTER_MINIMUM_ANISOTROPIC = 0x155, FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
  FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181, FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184, FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185, FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
  FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191, FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194, FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195, FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
}
 Available filters available for samplers.
 
enum  TEXTURE_ADDRESS_MODE {
  TEXTURE_ADDRESS_WRAP = 1, TEXTURE_ADDRESS_MIRROR = 2, TEXTURE_ADDRESS_CLAMP = 3, TEXTURE_ADDRESS_BORDER = 4,
  TEXTURE_ADDRESS_MIRROR_ONCE = 5
}
 Available texture addressing modes available for samplers.
 
enum  COMPARISON_FUNC {
  COMPARISON_NEVER = 1, COMPARISON_LESS = 2, COMPARISON_EQUAL = 3, COMPARISON_LESS_EQUAL = 4,
  COMPARISON_GREATER = 5, COMPARISON_NOT_EQUAL = 6, COMPARISON_GREATER_EQUAL = 7, COMPARISON_ALWAYS = 8
}
 Available comparison functions.
 
enum  FORMAT {
  UNKNOWN_FORMAT = 0, R32G32B32A32_TYPELESS = 1, R32G32B32A32_FLOAT = 2, R32G32B32A32_UINT = 3,
  R32G32B32A32_SINT = 4, R32G32B32_TYPELESS = 5, R32G32B32_FLOAT = 6, R32G32B32_UINT = 7,
  R32G32B32_SINT = 8, R16G16B16A16_TYPELESS = 9, R16G16B16A16_FLOAT = 10, R16G16B16A16_UNORM = 11,
  R16G16B16A16_UINT = 12, R16G16B16A16_SNORM = 13, R16G16B16A16_SINT = 14, R32G32_TYPELESS = 15,
  R32G32_FLOAT = 16, R32G32_UINT = 17, R32G32_SINT = 18, R32G8X24_TYPELESS = 19,
  D32_FLOAT_S8X24_UINT = 20, R32_FLOAT_X8X24_TYPELESS = 21, X32_TYPELESS_G8X24_UINT = 22, R10G10B10A2_TYPELESS = 23,
  R10G10B10A2_UNORM = 24, R10G10B10A2_UINT = 25, R11G11B10_FLOAT = 26, R8G8B8A8_TYPELESS = 27,
  R8G8B8A8_UNORM = 28, R8G8B8A8_UNORM_SRGB = 29, R8G8B8A8_UINT = 30, R8G8B8A8_SNORM = 31,
  R8G8B8A8_SINT = 32, R16G16_TYPELESS = 33, R16G16_FLOAT = 34, R16G16_UNORM = 35,
  R16G16_UINT = 36, R16G16_SNORM = 37, R16G16_SINT = 38, R32_TYPELESS = 39,
  D32_FLOAT = 40, R32_FLOAT = 41, R32_UINT = 42, R32_SINT = 43,
  R24G8_TYPELESS = 44, D24_UNORM_S8_UINT = 45, R24_UNORM_X8_TYPELESS = 46, X24_TYPELESS_G8_UINT = 47,
  R8G8_TYPELESS = 48, R8G8_UNORM = 49, R8G8_UINT = 50, R8G8_SNORM = 51,
  R8G8_SINT = 52, R16_TYPELESS = 53, R16_FLOAT = 54, D16_UNORM = 55,
  R16_UNORM = 56, R16_UINT = 57, R16_SNORM = 58, R16_SINT = 59,
  R8_TYPELESS = 60, R8_UNORM = 61, R8_UINT = 62, R8_SNORM = 63,
  R8_SINT = 64, A8_UNORM = 65, R1_UNORM = 66, R9G9B9E5_SHAREDEXP = 67,
  R8G8_B8G8_UNORM = 68, G8R8_G8B8_UNORM = 69, BC1_TYPELESS = 70, BC1_UNORM = 71,
  BC1_UNORM_SRGB = 72, BC2_TYPELESS = 73, BC2_UNORM = 74, BC2_UNORM_SRGB = 75,
  BC3_TYPELESS = 76, BC3_UNORM = 77, BC3_UNORM_SRGB = 78, BC4_TYPELESS = 79,
  BC4_UNORM = 80, BC4_SNORM = 81, BC5_TYPELESS = 82, BC5_UNORM = 83,
  BC5_SNORM = 84, B5G6R5_UNORM = 85, B5G5R5A1_UNORM = 86, B8G8R8A8_UNORM = 87,
  B8G8R8X8_UNORM = 88, FORCE_UINT = 0xffffffffUL
}
 Available formats for resources.
 
enum  MAP {
  MAP_READ = 1, MAP_WRITE = 2, MAP_READ_WRITE = 3, MAP_WRITE_DISCARD = 4,
  MAP_WRITE_NO_OVERWRITE = 5
}
 Available mapping request types.
 
enum  DEPTH_WRITE_MASK { DEPTH_WRITE_MASK_ZERO = 0, DEPTH_WRITE_MASK_ALL = 1 }
 Available depth write masks. More...
 
enum  STENCIL_OP {
  STENCIL_OP_KEEP = 1, STENCIL_OP_ZERO = 2, STENCIL_OP_REPLACE = 3, STENCIL_OP_INCR_SAT = 4,
  STENCIL_OP_DECR_SAT = 5, STENCIL_OP_INVERT = 6, STENCIL_OP_INCR = 7, STENCIL_OP_DECR = 8
}
 Available stencil operations.
 
enum  PRIMITIVE_TOPOLOGY {
  PRIMITIVE_TOPOLOGY_UNDEFINED = 0, PRIMITIVE_TOPOLOGY_POINTLIST = 1, PRIMITIVE_TOPOLOGY_LINELIST = 2, PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
  PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4, PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5, PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10, PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
  PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12, PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13, PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33, PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
  PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35, PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36, PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37, PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
  PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39, PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40, PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41, PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
  PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43, PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44, PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45, PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
  PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47, PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48, PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49, PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
  PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51, PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52, PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53, PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
  PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55, PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56, PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57, PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
  PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59, PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60, PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61, PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
  PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63, PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64
}
 Available primitive topologies used within meshes.
 
enum  DSV_FLAG { DSV_READ_ONLY_DEPTH = 0x1L, DSV_READ_ONLY_STENCIL = 0x2L }
 Available depth and stencil view flags.
 
enum  DSV_DIMENSION {
  DSV_DIMENSION_UNKNOWN = 0, DSV_DIMENSION_TEXTURE1D = 1, DSV_DIMENSION_TEXTURE1DARRAY = 2, DSV_DIMENSION_TEXTURE2D = 3,
  DSV_DIMENSION_TEXTURE2DARRAY = 4, DSV_DIMENSION_TEXTURE2DMS = 5, DSV_DIMENSION_TEXTURE2DMSARRAY = 6
}
 Available depth and stencil view dimensions.
 
enum  RTV_DIMENSION {
  RTV_DIMENSION_UNKNOWN = 0, RTV_DIMENSION_BUFFER = 1, RTV_DIMENSION_TEXTURE1D = 2, RTV_DIMENSION_TEXTURE1DARRAY = 3,
  RTV_DIMENSION_TEXTURE2D = 4, RTV_DIMENSION_TEXTURE2DARRAY = 5, RTV_DIMENSION_TEXTURE2DMS = 6, RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
  RTV_DIMENSION_TEXTURE3D = 8
}
 Available render target view dimensions.
 
enum  SRV_DIMENSION {
  SRV_DIMENSION_UNKNOWN = 0, SRV_DIMENSION_BUFFER = 1, SRV_DIMENSION_TEXTURE1D = 2, SRV_DIMENSION_TEXTURE1DARRAY = 3,
  SRV_DIMENSION_TEXTURE2D = 4, SRV_DIMENSION_TEXTURE2DARRAY = 5, SRV_DIMENSION_TEXTURE2DMS = 6, SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
  SRV_DIMENSION_TEXTURE3D = 8, SRV_DIMENSION_TEXTURECUBE = 9, SRV_DIMENSION_TEXTURECUBEARRAY = 10, SRV_DIMENSION_BUFFEREX = 11
}
 Available shader resource views dimensions.
 
enum  UAV_DIMENSION {
  UAV_DIMENSION_UNKNOWN = 0, UAV_DIMENSION_BUFFER = 1, UAV_DIMENSION_TEXTURE1D = 2, UAV_DIMENSION_TEXTURE1DARRAY = 3,
  UAV_DIMENSION_TEXTURE2D = 4, UAV_DIMENSION_TEXTURE2DARRAY = 5, UAV_DIMENSION_TEXTURE3D = 8
}
 Available unordered access views dimensions.
 
enum  BUFFEREX_SRV_FLAG { BUFFEREX_SRV_FLAG_RAW = 0x1 }
 Available buffer ex shader resource views flags.
 
enum  BUFFER_UAV_FLAG { BUFFER_UAV_FLAG_RAW = 0x1, BUFFER_UAV_FLAG_APPEND = 0x2, BUFFER_UAV_FLAG_COUNTER = 0x4 }
 Available unordered access views flags.
 
enum  BLEND {
  BLEND_ZERO = 1, BLEND_ONE = 2, BLEND_SRC_COLOR = 3, BLEND_INV_SRC_COLOR = 4,
  BLEND_SRC_ALPHA = 5, BLEND_INV_SRC_ALPHA = 6, BLEND_DEST_ALPHA = 7, BLEND_INV_DEST_ALPHA = 8,
  BLEND_DEST_COLOR = 9, BLEND_INV_DEST_COLOR = 10, BLEND_SRC_ALPHA_SAT = 11, BLEND_BLEND_FACTOR = 14,
  BLEND_INV_BLEND_FACTOR = 15, BLEND_SRC1_COLOR = 16, BLEND_INV_SRC1_COLOR = 17, BLEND_SRC1_ALPHA = 18,
  BLEND_INV_SRC1_ALPHA = 19
}
 Available blending types.
 
enum  BLEND_OP {
  BLEND_OP_ADD = 1, BLEND_OP_SUBTRACT = 2, BLEND_OP_REV_SUBTRACT = 3, BLEND_OP_MIN = 4,
  BLEND_OP_MAX = 5
}
 Available blending operations.
 
enum  COLOR_WRITE_ENABLE {
  COLOR_WRITE_ENABLE_RED = 1, COLOR_WRITE_ENABLE_GREEN = 2, COLOR_WRITE_ENABLE_BLUE = 4, COLOR_WRITE_ENABLE_ALPHA = 8,
  COLOR_WRITE_ENABLE_ALL = (((COLOR_WRITE_ENABLE_RED | COLOR_WRITE_ENABLE_GREEN) | COLOR_WRITE_ENABLE_BLUE) | COLOR_WRITE_ENABLE_ALPHA)
}
 Available color write masks.
 
enum  FILL_MODE { FILL_WIREFRAME = 2, FILL_SOLID = 3 }
 Available filling mode during rasterization.
 
enum  CULL_MODE { CULL_NONE = 1, CULL_FRONT = 2, CULL_BACK = 3 }
 Available culling modes.
 
enum  SHADER_TYPE {
  VERTEX_SHADER = 0, HULL_SHADER, DOMAIN_SHADER, GEOMETRY_SHADER,
  PIXEL_SHADER, COMPUTE_SHADER, RAYTRACING_SHADER, UNKNOWN_SHADER
}
 Available shader types.
 
enum  SHADER_SEMANTIC {
  POSITION_0 = 0, POSITION_1, POSITION_2, POSITION_3,
  POSITION_4, NORMAL_0 = POSITION_0 + 8, NORMAL_1, NORMAL_2,
  NORMAL_3, NORMAL_4, UV_0 = NORMAL_0 + 8, UV_1,
  UV_2, UV_3, UV_4, COLOR_0 = UV_0 + 8,
  COLOR_1, COLOR_2, COLOR_3, COLOR_4,
  TANGENT_0 = COLOR_0 + 8, TANGENT_1, TANGENT_2, TANGENT_3,
  TANGENT_4, BINORMAL_0 = TANGENT_0 + 8, BINORMAL_1, BINORMAL_2,
  BINORMAL_3, BINORMAL_4, SV_VERTEX_ID = BINORMAL_0 + 8, WORLDMAT_0 = SV_VERTEX_ID + 1,
  WORLDMAT_1, WORLDMAT_2, WORLDMAT_3, WORLDMAT_4,
  OUTPUT_SEMANTIC_OFFSET = WORLDMAT_0 + 16, MAXIMUM_SEMANTIC_INDEX = OUTPUT_SEMANTIC_OFFSET * 2
}
 Available shader semantics.
 
enum  SHADER_RESOURCE_SLOT {
  CONSTANT_BUFFER_0 = 0, CONSTANT_BUFFER_1, CONSTANT_BUFFER_2, CONSTANT_BUFFER_3,
  CONSTANT_BUFFER_4, CONSTANT_BUFFER_5, CONSTANT_BUFFER_6, CONSTANT_BUFFER_7,
  CONSTANT_BUFFER_8, CONSTANT_BUFFER_9, CONSTANT_BUFFER_10, CONSTANT_BUFFER_11,
  CONSTANT_BUFFER_12, CONSTANT_BUFFER_13, CONSTANT_BUFFER_14, CONSTANT_BUFFER_15,
  CONSTANT_BUFFER_16, CONSTANT_BUFFER_17, CONSTANT_BUFFER_18, SHADER_RESOURCE_0,
  SHADER_RESOURCE_1, SHADER_RESOURCE_2, SHADER_RESOURCE_3, SHADER_RESOURCE_4,
  SHADER_RESOURCE_5, SHADER_RESOURCE_6, SHADER_RESOURCE_7, SHADER_RESOURCE_8,
  SHADER_RESOURCE_9, SHADER_RESOURCE_10, SHADER_RESOURCE_11, SHADER_RESOURCE_12,
  SHADER_RESOURCE_13, SHADER_RESOURCE_14, SHADER_RESOURCE_15, SHADER_RESOURCE_16,
  SHADER_RESOURCE_17, SHADER_RESOURCE_18, UAV_RESOURCE_0, UAV_RESOURCE_1,
  UAV_RESOURCE_2, UAV_RESOURCE_3, UAV_RESOURCE_4, UAV_RESOURCE_5,
  UAV_RESOURCE_6, UAV_RESOURCE_7, UAV_RESOURCE_8, UAV_RESOURCE_9,
  UAV_RESOURCE_10, UAV_RESOURCE_11, UAV_RESOURCE_12, UAV_RESOURCE_13,
  UAV_RESOURCE_14, UAV_RESOURCE_15, UAV_RESOURCE_16, UAV_RESOURCE_17,
  UAV_RESOURCE_18, SAMPLER_0, SAMPLER_1, SAMPLER_2,
  SAMPLER_3, SAMPLER_4, SAMPLER_5, SAMPLER_6
}
 Available resources slots.
 
enum  PROGRAM_COMPILATION_PROFILE { PROFILE_UNKNOWN = 0, PROFILE_SM_5_0, PROFILE_SM_5_1, PROFILE_SM_6_0 }
 Available program compilation profiles.
 

Detailed Description

Encompasses all API of component NilkinsGraphics.

This component abstracts the system's graphics API. It currently support different renderers :

A good start would be to check the nkGraphics::MainSystem for initialization. Then, by taking a look at nkGraphics::RenderQueue and nkGraphics::Mesh, quickly get something on screen. Finally, open new possibilities using nkGraphics::Shader and nkGraphics::Compositor to alter the rendering and its composition.

For more guided information, best starting point would be the dedicated tutorials.

Enumeration Type Documentation

◆ RENDER_PROPS

Available rendering properties.

Enumerator
V_SYNC 

V Sync.

◆ WINDOW_PROPS

Enum of all properties a window can have.

Enumerator
WIDTH 

Property describing width.

HEIGHT 

Property describing height.

FULLSCREEN 

Property describing if it should be fullscreen.

◆ CONTENT_LOAD_RESULT_STATE

The available values for a parsing attempt result.

Enumerator
SUCCESS 

Fully successful parsing.

PARTIAL 

Partial, there were successful declaration loading alongside failures.

FAILURE 

Fully failed parsing.

◆ PASS_TYPE

enum nkGraphics::PASS_TYPE
strong

The pass types available in the component.

Enumerator
UNKNOWN 

Unknown place holder.

CLEAR_TARGETS 

Clear targets pass.

COMPUTE 

Compute pass.

INSTANCING 

Instancing pass.

MONO_MATERIAL 

Mono material pass.

POST_PROCESS 

Post processing pass.

RENDER_SCENE 

Render scene pass.

RAYTRACING 

Raytracing pass.

◆ PROGRAM_TYPE

enum nkGraphics::PROGRAM_TYPE : int
strong

The type of programs available.

Enumerator
UNKNOWN 

Unknown placeholder.

COMPUTE 

A compute program.

GEOMETRY 

A geometry stream program.

PIPELINE 

A pipeline program.

RAYTRACING 

A raytracing program.

◆ RENDERING_API

Enumerates supported graphics API.

Used in configurations to select which API to use.

Enumerator
AUTOMATIC 

Automatic. The system is left with choosing the API.

D3D11 

DirectX 11.

D3D12 

DirectX 12.

◆ RESOURCE_LOAD_STATE

The resource load states possible.

Enumerator
UNLOADED 

Resource is unloaded and awaiting configuration.

LOADING 

Resource is loading.

READY_FOR_RENDERING 

Resource is still loading, but ready to be used in some contexts. This can be the case for textures auto generating mips for instance.

LOADED 

Resource is fully loaded and ready for usage.

◆ RESOURCE_TYPE

The type of resources available in the component.

Enumerator
UNKNOWN 

Unknown place holder.

COMPOSITOR 

A compositor.

MESH 

A mesh.

BLEND_STATE 

A blend state.

DEPTH_STENCIL_STATE 

A depth and stencil state.

RASTER_STATE 

A raster state.

PROGRAM 

A program.

SHADER 

A shader.

BUFFER 

A buffer.

ACCELERATION_STRUCTURE 

An acceleration structure.

TEXTURE 

A texture.

SAMPLER 

A sampler.

NODE_WRAPPER 

A Node wrapper. Used internally.

◆ TEX_TYPE

enum nkGraphics::TEX_TYPE
strong

The type a texture can be.

Enumerator
TEX_2D 

A 2D texture.

TEX_3D 

A 3D texture.

TEX_CUBEMAP 

A cubemap.

◆ TEX_RENDER_FLAG

The render flag possible for a texture.

Enumerator
NO_RENDER 

Not used as a target.

RENDER_TARGET 

Used as a color target rendering.

DEPTH_RENDER_TARGET 

Used as a depth target rendering.

◆ USAGE

Available usage for resources. Drives the memory used for hosting the data.

Enumerator
USAGE_DEFAULT 

Default usage. Will be hosted on GPU, most likely.

USAGE_IMMUTABLE 

Immutable. Needs starting resources, will be hosted on GPU, most likely.

USAGE_DYNAMIC 

Dynamic. Meant to be updated often (per frame), will be hosted on CPU, most likely.

USAGE_STAGING 

Staging. Meant to be read from CPU. Will be hosted on CPU, most likely.

◆ CPU_ACCESS_FLAG

Available cpu access flags.

Enumerator
CPU_ACCESS_NONE 

CPU won't need to be able to access the resource.

CPU_ACCESS_WRITE 

CPU will need write access to the resource.

CPU_ACCESS_READ 

CPU will need read access to the resource.

CPU_ACCESS_READ_WRITE 

CPU will need both read and write access to the resource.

◆ DEPTH_WRITE_MASK

Available depth write masks.

Enumerator
DEPTH_WRITE_MASK_ZERO 

Turns off depth writes.

DEPTH_WRITE_MASK_ALL 

Turns on depth writes.